Numerousity and latency driven dynamic computer grouping

ABSTRACT

In a domain containing one of many computing devices, the computing device transmits a query and receives back a response from one or more neighbor-casting groups in the domain each including one or more of the computing devices. Predetermined criteria are applied by the computing device to select one of the groups to which it is joined as a group member. The predetermined criteria can be the number of computing devices in the selected group, a length of time between the query and the response from the selected group, or a combination of thereof. When the selected group has few computing devices, the computing device can send a query and receive back a response from one or more groups. By applying criteria similar to the predetermined criteria, the computing device can select one other group, remove itself from its current group, and join the other selected group.

TECHNICAL FIELD

This invention relates to the computing devices in a domain, and moreparticularly to grouping computing devices in a network into subgroups.

BACKGROUND

A domain or other large network environment can have hundreds orthousands of related computing devices, each of which has some elementof trust for the other related computing devices. As used herein, adomain includes a collection of computing devices that share a commondomain database and security policy, where each domain has a uniquename. It is useful to divide up the computing devices into smaller,manageable groups. These groups can be useful for system management, fordeploying applications or data across hundreds or thousands of relatedcomputing devices in the domain, and for distributing computing problemsamong related computing devices in the groups.

The efficiency of dividing related computing devices into groups can beseen through examples. An application or data can be distributed to onerelated computing device in a group so that it can share its locallycached files with other related computing devices across the group, suchas within a local network. Thus, a group can serve as a relatedcomputing device-based caching system. The caching system of the groupallows application, data, and data processing tasks to be delivered in apeer-to-peer fashion between related computing devices within the group.For example, when a document needs to be distributed to thousands ofusers, the first related computing device to receive this document in agroup is then able to serve it to other related computing devices in itsgroup. Once other related computing devices receive the file, they canthen serve the file to additional related computing devices in the groupthat are requesting it. As the number of related computing devices in agroup that are able to serve others eventually expands, the documentwill be delivered faster without overwhelming the network or any singlerelated computing device.

In another example where a related computing device can cache contentfor multiple users on the same Local Area Network (LAN), a series ofvideo files may need to be sent to multiple users in a satellite office.By using one related computing device in a group to first retrieve theseries of video files from a corporate server, and then distributing theseries of video files in a peer-to-peer model (or using a group cache ofthe video files) within the group, there will be a significant reductionin the amount of Wide Area Network (WAN) traffic to the satellite officewith the corporate server. As such, this kind of efficient distributionprotects WAN bandwidth by delivering content to a group once, andallowing other employees to get the content from any related computingdevice on the LAN in a peer-to-peer fashion. Thus, the content onlyneeds to cross the corporate server firewall and travel the WAN once andis distributed efficiently within the LAN in the satellite office(s).Note that any related computing device on the LAN can receive data,software, or a computing task either from the corporate backbone (e.g.,corporate servers) on the WAN, or from any neighboring related computingdevice in the group from the LAN via peer-to-peer networking.

Since any one group can be configured to have a relatively smallmembership in a “peer-casting” application, the original relatedcomputing device that first receives an application is not overwhelmedwith requests from its group peers and as more of the peers receive theapplication, other peers in the group can go to any group member thatalready has the application to get their own copy. Further, the load onthe original corporate server is significantly reduced since the numberof related computing devices that the original corporate server mustdirectly communicate with is significantly reduced.

In some environments it may be easy to define a peer-casting groupwithin which related computing devices can share data, software, andcomputing tasks. For example, if there are only a few ‘close by’ relatedcomputing devices, then specifying these related computing devices asbeing in a single group is a fairly easy chore for a system or networkadministrator. In a domain or other large network environment, however,there may be hundreds or thousands of related computing devices suchthat it may be all but impossible to directly create and manage thesegroups. A problem exists in that related computing devices are notdynamically formed into groups, and groups of related computing devicesare not maintained automatically. Rather, intervention by a system ornetwork administrator is required. It would be an advance in the art todynamically create and manage groupings of related computing deviceswithin a domain without requiring the attention of a system or networkadministrator.

SUMMARY

According to one exemplary implementation, a method is described for adomain containing one of many computing devices. The computing devicetransmits a query and receives back a response from one or moreneighbor-casting (NC) groups in the domain. Each NC group includes oneor more of the computing devices. The computing device appliespredetermined criteria to select one of the NC groups. After theselection is made, the computing device is joined to the selected NCgroup, such as by association with a unique NC group identifier. Thepredetermined criteria can be the number of computing devices in theselected NC group (e.g., numerousity), a length of time between thequery and the response from the selected NC group (e.g., latency), or acombination of thereof. In another exemplary implementation, when theselected group has few computing devices, the computing device can senda query and receive back a response from one or more groups. By applyingcriteria similar to the predetermined criteria, the computing device canselect one other group, remove itself from its current group, and jointhe other selected group.

Exemplary implementations allow a computing device to dynamically groupitself with other computing devices, to dynamically manage NC groupswith which the computing device is in communication, as well as toremove itself from an NC group.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an exemplary environment in which a plurality of relatedcomputing devices are dynamically formed into a neighbor casting group,each of which can be one of a variety of difference kinds of computingdevices.

FIG. 2 shows an exemplary environment in which a meta group isdynamically formed from other neighbor casting groups, including theneighbor casting group dynamically formed as seen in FIG. 1.

FIG. 3 shows a super meta group that has been dynamically formed from aplurality of meta groups.

FIG. 4 illustrates an exemplary process for dynamically creatingmultiple peer-casting groups from larger groups of related computingdevices in a domain.

FIG. 5 illustrates an exemplary group reformation process for when arelated computing device joins an existing group and a test is needed tosee if the existing group is larger than a predetermined group sizecriteria.

FIG. 6 illustrates an exemplary process for determining whether arelated computing device is in a group all by itself, or whether thenumber of related computing devices in the group is below predeterminedminimum, and if so then an attempt is made at regular intervals torejoin another more acceptable group by sending out a querytransmission, and if a new group is found, then the current group willleave and join the new group.

FIG. 7 illustrates an exemplary process for discovering whether arelated computing device has been moved such that it is no longer closeto other members of its group in network terms of response time, and ifso discovered then that related computing device can leave the currentgroup and then try to join another better matching group by using, forexample, the exemplary process illustrated in FIG. 6.

FIG. 8 is a block diagram of both an exemplary related computing deviceand an exemplary computing environment that can be used to create andmanage groups of exemplary related computing devices as discussed in thedisclosed exemplary implementations.

The same numbers are used throughout the disclosure and figures toreference like components and features. Series 100 numbers refer tofeatures originally found in FIG. 1, series 200 numbers refer tofeatures originally found in FIG. 2, series 300 numbers refer tofeatures originally found in FIG. 3, and so on.

DETAILED DESCRIPTION

This disclosure pertains to the dynamic grouping together of relatedcomputing devices in a domain, and managing the groups. Applicabledomains can have hundred or thousands of related computing devices,although the present disclosure is equally applicable to domains havinga significantly fewer number of related computing devices. This groupingis dynamic in that groups of related computing devices in the domain arecreated and managed without intervention by a system or networkadministrator. The dynamic creation and management of groups is drivenby predetermined criteria as to the number of related computing devicesthat can be within a group and/or is driven by predetermined criteria asto acceptable latency in response times between related computingdevices within a group.

In order to dynamically create groups, a related computing device shouldhave the ability to discover neighboring groups (if any) that alreadyexists in the domain. Once the NC groups are discovered, an appropriatecriteria can be applied in order to select which of the existingneighboring groups (Neighbor-Casting (NC) groups) are appropriate. Onceone or more NC groups have been dynamically created, they should beautomatically managed so that no NC group grows inappropriately large,and so that group membership can be automatically maintained as relatedcomputing devices are added to and removed from the domain and/or from alocal area network over time.

The dynamic creation and management of NC groups is regulated bypredetermined criteria that defines constraints that are put on the NCgroups. Once such constraint is a minimum size criterion (e.g.,numerousity) that dictates how small an NC group should be (e.g., aminimum number of related computing devices that are to be in one NCgroup). This number need not be mandatory, but may be discretionary inthat a group may be permitted to be smaller, but groups should be atleast the specified size. As such, NC groups that are smaller than thisnumber will be managed so that attempts will be made to try to join itwith larger groups, if scrutiny of the predetermined criteria deems thatthey can. For example for small NC groups, a minimum size criterion maybe a default minimum of three related computing devices. Anotherconstraint on an NC group is a maximum size criterion that dictates howlarge the NC group should be (e.g., a maximum number of relatedcomputing devices that are to be in one NC group).

Still another constraint on NC groups is a response timeout criterion(e.g., latency). The response timeout criterion that dictates thelongest acceptable length of time that a related computing device willwait for a reply from any NC group. The reply is requested when therelated computing device transmits a query for existing NC groups andthat related computing device is being managed to try to join an NCgroup. After the expiration of the response timeout criteria, anyadditional replies are cut off. For example, if an NC group repliesafter the length of time specified by the response timeout criteria,then that NC group is most likely “too far” away, in network terms ofthe latency of the response. The response timeout criteria can be avalue that is chosen such that an NC group will not span a modem or aCable/Digital Subscriber Line (DSL) connection (i.e., if set to lessthat 10 milliseconds, then this values will likely exclude anyconnection that spans Cable/DSL lines).

Yet another constraint on NC groups is a retirement timeout criteriathat dictates the longest time that a group member can disappear (notcommunicate with any other group member) before other members of a groupautomatically remove that member from the group. A further constraint onNC groups is a maximum response criterion that dictates the maximumamount of time that members within a group should require incommunicating with each other. If a related computing device is moved,it may no longer be close enough for an acceptable latency in itsresponses and therefore would no longer be an acceptably close neighbor.In this case, it would be more efficient to have the related computingdevice automatically leave its existing group and join a closer group(e.g., automatically form a new group).

The groups being formed as described in this specification are composedof related computing devices that are in the same domain. As such,related computing devices in each group that is to be formed alreadyhave an established trust relationship. While the established trustrelationship need not be a full trust relationship, the trust should besufficient such that non-members of the domain can be excluded fromjoining a group. Additionally, the creation and management of groupsshould include criteria that prevent a mistaken joining of a relatedcomputing device in a domain into a group with one or more computingdevices that are not in the domain.

The forgoing constraints can be used to dynamically create multiplepeer-casting groups from larger groups of related computing devices in adomain. In further explanation, this disclosure is organized as follows:Section A of this disclosure describes exemplary implementations ofexemplary environments for creating and managing groups of relatedcomputing devices in a domain. Section B describes exemplaryimplementations of exemplary processes to create and manage groups ofrelated computing devices in a domain, and Section C describes both anexemplary related computing device and an exemplary computingenvironment that can be used to provide the exemplary implementationsdescribed in Sections A and B.

A. Environments for Creating and Managing Groups

An exemplary environment is seen in FIG. 1 as a domain 100 in whichthere can be a dynamic formation of a group of related computing devices102(1-M) that are in the same domain 100. Each related computing device102 is in communication with a network (106) such as a Local AreaNetwork (LAN). An operating system (O/S) 104 is included in each relatedcomputing device 102. O/S 104 can include a shared directory. Once aplurality of related computing devices 102 have been dynamically formedinto a group, they can communicate as a group. One such form ofcommunication can include the sharing of cache. The contents of thecache that is shared among the group can include software that is bedistributed among the group, data that is to be distributed among thegroup, and data processing tasks that are to be distributed forcomputing by one or more members of the group. A full or partialdirectory of contents of the cache can be included in, or be separatefrom, O/S 104 in each related computing device 102.

The logic for creating and managing groups of related computing devices102(m) in a domain may reside in O/S 104, but may also be fully orpartially a standalone application. In one implementation, predeterminedcriteria for dynamically forming and managing groups can be a componentof a Background Intelligent Transfer Service (BITS). BITS can be anaspect of O/S 104 that is used, for instance, by Software ManagementServices (SMS). SMS is an application outside the O/S 104 that is usedto deploy, uninstall, and/or manage software updates (e.g., such assecurity patched and updates) for the related computing device 102. Theefficiency realized by dynamic group formation and management is thatthese tasks can be accomplished without intervention by a network orsystem administrator. Dynamic grouping aspects of BITS can be enabled ordisabled and may or may not be exposed for use by third parties as partof O/S 104 or as part of a standalone application.

A dynamic group formation process 120 forms an NC group (k) from relatedcomputing device 102(1) through related computing device 102(M) viacommunications over network 106. Note that the present disclosureanticipates that there is a wide variety of types and kinds of relatedcomputing devices 102, examples of which are depicted as being a videogame console 108, a set top box 110, an automatic teller machine 112, aPersonal Digital Assistant (PDA) 114, a Personal Computer (PC), 116, acellular telephone 118, etc. The related computing device 102 can alsobe a peripheral computing device (a printer, facsimile machine, copier,or multifunction peripheral device) or a server.

Once NC groups have been formed, they can be dynamically groupedtogether in a likewise manner into meta groups (and so on) to formgroups of groups. Accordingly, domain 100 is also seen in FIG. 2 whichfeatures NC group (1) through NC group (K), where each NC group (k) isdynamically formed into a meta group. Further, any meta group that isdynamically formed as shown in FIG. 2 can be dynamically joined withstill other meta groups in domain 100 to form a super meta group. Asshown in FIG. 3, a meta group (1) includes NC groups 1-Q, a meta group(p) includes NC groups 1-R, and a meta group (P) includes NC groups 1-S.As such, a super meta group is dynamically created from meta groups(1-P). As an alternative to defining the foregoing three (3) levels ofgroups, groups and meta-groups can be contained within othermeta-groups, and the grouping can be any number of levels.

Given the foregoing explanation of FIGS. 1-3, each member in an NC groupcan be assigned a globally unique group ID (GUID). Each group, forinstance, may be constrained to have 7-15 related computing devices thatare relatively close together, in terms of response time, for efficientintra-group communications. Because excessive latency is inefficient,response time is measured to determine a member's closeness and whethera member should be removed from a group. Though a member's response timeis tolerable, the member might still be removed in favor of joining thatmember to a different group to which it will respond to more quickly, orin favor of joining that member to group that is not as processintensive (e.g., not as busy) as its present group.

In sum, each group in the domain has at least one related computingdevice and each of the groups, meta groups, and super meta groups canhave a GUID to uniquely identify itself with. Each related computingdevice can be a node on a logical hierarchical tree structurerepresenting a group, meta group, and/or super meta group. Once groupshave been dynamically created, the related computing devices in thegroups treat each other as neighbors so that they can doneighbor-casting of data, software, and computing tasks.

B. Processes for Creating and Managing Groups

An exemplary process 400 is seen in FIG. 4 according to oneimplementation that can be used to dynamically create multiplepeer-casting groups from larger groups of related computing devices in adomain. Process 400 is executed by a related computing device upon whichan examination is made though communications received by and sent fromthe related computing device presently being examined. A dynamic groupformation implementation of process 400 begins at block 402 and moves toa query 404. Query 404 determines whether the related computing device(e.g., a computer) is presently in a peer-casting group (i.e., NC group)already. If so, query 404 also determines whether the NC group has morethan a predetermined minimum size of members. If both answers are in theaffirmative, then process 400 terminates at block 424. Otherwise,control of process 400 moves to a block 406.

At block 406, a determination is made on the network as to what groupscurrently exist. For TCP networks, this can be accomplished with abroadcast/multicast of a group query packet (which transmission canusually be made just to the subnet), and then ‘listening’ for responseswithin a predetermined timeout length of time. For queries to discoverother existing groups in the domain; it may be possible to use SSDP(Simple Service Discovery Protocol) in order for a new computing deviceto query for existing groups in the domain. The responses to the querycan include information about joining the group, the number of currentmembers in the group, as well as any additional group information thatcan be used to determine membership applicability (e.g., the GUID of thegroup). Further, the response can be signed with credentials such thatit can be known that the responder is part of the same domain (i.e.,that the response has an acceptable level of trust), or both sides ofthe response can be authenticated at block 418, discussed below.

After block 406, process 400 passes control to a block 408 at which theresponses are ordered according to the closest (least response time) andsmallest (least number of related computing devices) group. Note that iftwo groups have the same response time then process 400 can beconfigured such that the first smaller group will be selected. Thegroups can also be ordered by other group membership criteria as well,such as how busy the members of the group are or by how muchavailability of machine resources exist for the group. For example, agroup with low computer utilization may be a better group to join evenif that group has more members than another group that has highercomputer utilization of its members. Additional joining criteria can bepre-configured into process 400

After block 408, process 400 passes control to a query 410. Query 410determines whether the related computing device presently being examinedis in a group already. If so, the process 400 move to a query 412. Ifnot, then process 400 passes control to block 420.

At query 420, it is determined whether one or more responses werereceived from existing groups. If so, the process 400 moves on to ablock 418 at which the related computing device is joined to the firstand best group as determined by the ordering at block 408. In theprocess of joining the NC group at block 418, the computing devicepresently being examined and the group sought to be joined canauthenticate each other in order to exclude untrusted computing devicesfrom group membership. If, however, it is determined by query 420 thatno responses have been received, then process 400 moves to block 422 atwhich a new group is created having only the related computing devicepresently being examined as its sole member. After block 422, process400 terminates at block 424.

At query 412, it is determined whether one or more responses had beenreceived from existing groups. If so, then process 400 proceeds to aquery 414. If, however, no responses were received, then process 400terminates at block 424. Query 414 determines whether the best responsethat was received was from a group that would be better for the relatedcomputing device presently being examined that its current NC group. Ifso, then process 400 moves to block 416 so that the related computingdevice presently being examined can leave the current group and joiningthe better group at block 418. Otherwise, process 400 terminates atblock 424.

Block 418 of process 400 allows a related computing device to join anexisting group. If the group is joined at block 418, then the group canbe tested to see if the number of members in the group exceeds apredetermined maximum size. An exemplary process 500 for this test isseen in FIG. 5 that begins at block 502 and proceeds to a query 504.Query 504 determines whether the current group membership is greaterthan the predetermined maximum size. If not then process 500 terminatesat block 512. If query 404 is affirmative, then the group is to be spitup and process 400 moves to block 506.

At block 506, one half of the members in the group are selected to stayin the existing group and one half are selected to form a new separategroup. There are, however, several ways to split the group membership.For example, one way is to randomly choose one half the members, andanother is to use a predetermined criteria. For example, members can bebroken into two groups based on their observed response times within thegroup (i.e., network distance). Additionally, members that are in theprocess of inviting another related computing device into the group,such as through communication of responses to queries from other relatedcomputing devices outside the group, can stay in the existing group. Analternative is to define an optimum size membership for the number ofmembers in a group, which size may not be the same as one-half (½) thepredetermined maximum group size, and then split the group into a grouphaving the optimum size membership—thus leaving the remaining members tomake up the other group.

After the selection of group members has been made at block 506, process500 moves to block 508 at which a new group is created for the membersselected to leave the existing group. One of the new group members canrandomly be selected, for instance, to create the group. A block 510follows block 508 at which each of the members selected for the newgroup leaves the existing group and joins the newly created group.Process 500 then terminates at block 512. Process 500 will effectivelymanage dynamic group formation and will effectively subdivide the domaininto groups of approximately the predetermined maximum group size (orless). Groups, in essence, are able to self manage themselves over time.

FIGS. 6-7 represent implementations of exemplary processes that can berun periodically (for example, once a day or every few days) to maintaingroups, such as by measuring time with an interval timer operating in arelated computing device that is a member of a group. As such, FIG. 6 isa flowchart for a process 600 that begins at block 602 when an intervaltimer signals the periodic execution. If the related computing devicepresently being examined is a member of a group all by itself, or thenumber of members in the group is below a predetermined minimum groupmembership size (e.g., numerousity) as per a query 604, then the singlemember or small number of members will try to rejoin another moreacceptable group at regular intervals, such as by using process 400 asseen in FIG. 4. Such an attempt can be made by sending out a group querypacket. If a new group is found, then the single member or small numberof members will leave the current group and join the new one. If thegroup size is within a predetermined tolerance, process 600 moves fromquery 604 to block 606 at which the interval timer is reset andrestarted. Process 600 then terminates at block 610.

At FIG. 7, a process 700 determines whether a related computing devicehas been moved with respect to its group. Process 700 can be configuredto begin at block 702 when an interval timer signals a periodicexecution of process 700. If the related computing device has been movedand is no longer close to the other members of its group, as measured bythe group's response time to the related computing device at a query704, then the related computing device can leave the current group atblock 706 and try to re-join another better matching group by rerunninga group formation algorithm at block 708, such as by using process 400as seen in FIG. 4. This can be accomplished by monitoring the responsetimes of intra-group communications. If the response times lengthenbeyond a predetermined maximum length of time and do not recover (i.e.,excluding transient networking issues), then it may be assumed that therelated computing device has moved to a new location. After block 708 oran affirmative response to query 704, process 700 moves to block 710 atwhich the interval timer is reset and restarted. Process 700 thenterminates at block 712.

As discussed above, latency in a response time can be indicative of the‘closeness’ of related computing devices. Related computing devices areisolated if they have slow links, thereby preventing spanning both alocal site and a remote site. When a related computing device is lookingto join a group and any reply follows a query for existing groups thatexceeds a maximum time period (e.g., more than 10 milliseconds for theexample of DSL), this latency in the response may be an indication thatthere is a spanning of a modem or of a Cable/DSL connection, or otherwide area network connection. By excluding members from groups on thebasis of a long response time, network bandwidth usage is made moreefficient than otherwise.

If a related computing device “disappears” from a network for anextended time, in that no communication is made with the relatedcomputing device, then the related computing device can be removed fromthe group by the other members. For example, if a related computingdevice is retired, sold, turned off, or is manually removed from agroup, then after a predetermined retire timeout length of time, therelated computing device will be automatically removed by the othergroup members. If a related computing device is turned off for anextended time greater than the predetermined retire timeout length oftime, then when the related computing device is turned back on, therelated computing device will no longer be a member of the group itoriginally joined and will need to rerun a group formation algorithm,such as by using process 400.

A group of related computing devices can have a shared group cache ofinformation or data and a shared database directory of what is in theshared group cache. These are used by the peers (e.g., members) in agroup. A shared directory is a database that can be on each peer or indifferent pieces spread out over peers in the group. This databaseserves as a library to answer queries that find out what other peers inthe group have and do not have, thus reducing data replication withinthe group, yet expanding intra-group network traffic (e.g., peer chitchat). One peer that needs data/software/parallel process computing canknow, via the shared directory, that another is now downloading what itneeds so that it will forebear getting its needs and wait until its peerhas the needed download before requesting it. As such, peers in a groupcan share information about what is available by using a shared databasedirectory of what is available on each peer in the group. Thus, eachpeer will check with the group for a needed download before going out ofthe group for it. As a needed download is distributed within the group,one peer might have a choice of several locations within the group tochoose as a download source. This choice can be made randomly. Theinformation can flow through the group by checking the shared directoryand then spreading the load of responding to requests for downloads ifmore than one peer has the needed download. The shared databasedirectory can also keep information as to whether a peer is now activeor is now being accessed so that requests for downloads are sent only topeers that are neither busy nor active.

Implementations presented herein enable dynamic creation and maintenanceof groups of related computing devices in a domain. Theseimplementations reduce network traffic and make content distributionmore efficient and less expensive due to the dynamic creation andmaintenance of groups.

C. Computing Device and Computing Environment.

FIG. 8 shows an exemplary computing device that can be used to implementthe processes described herein. Related computing device 842 includesone or more processors or processing units 844, a system memory 846, anda bus 848 that couples various system components including the systemmemory 846 to processors 844. The bus 848 represents one or more of anyof several types of bus structures, including a memory bus or memorycontroller, a peripheral bus, an accelerated graphics port, and aprocessor or local bus using any of a variety of bus architectures. Thesystem memory 846 includes read only memory (ROM) 850 and random accessmemory (RAM) 852. A basic input/output system (BIOS) 854, containing thebasic routines that help to transfer information between elements withinrelated computing device 842, such as during start-up, is stored in ROM850.

Related computing device 842 further includes a hard disk drive 856 forreading from and writing to a hard disk (not shown), a magnetic diskdrive 858 for reading from and writing to a removable magnetic disk 860,and an optical disk drive 862 for reading from or writing to a removableoptical disk 864 such as a CD ROM or other optical media. The hard diskdrive 856, magnetic disk drive 858, and optical disk drive 862 areconnected to the bus 848 by an SCSI interface 866 or some otherappropriate interface. The drives and their associated computer-readablemedia provide nonvolatile storage of computer-readable instructions,data structures, program modules and other data for related computingdevice 842. Although the exemplary environment described herein employsa hard disk, a removable magnetic disk 860 and a removable optical disk864, it should be appreciated by those skilled in the art that othertypes of computer-readable media which can store data that is accessibleby a computer, such as magnetic cassettes, flash memory cards, digitalvideo disks, random access memories (RAMs), read only memories (ROMs),and the like, may also be used in the exemplary operating environment.

A number of program modules may be stored on the hard disk 856, magneticdisk 860, optical disk 864, ROM 850, or RAM 852, including an operatingsystem (O/S) 870, one or more application programs 872 (such as anapplication to create and/or manage groups of related computing devicesin a domain), cache/other modules 874, and program data 876.Alternatively, O/S 870 can include a component that can create and/ormanage groups of related computing devices in a domain, such as isdescribed with respect to O/S 104(m) seen in FIG. 1. The various levelsof cache 874 (e.g., L1, L2, L3) can include shared directories, data,software, and/or computing tasks for distribution to other relatedcomputing devices within a group.

A user may enter commands and information into related computing device842 through input devices such as a keyboard 878 and a pointing device880. Other input devices (not shown) may include a microphone, joystick,game pad, satellite dish, scanner, or the like. These and other inputdevices are connected to the processing unit 844 through an interface882 that is coupled to the bus 848. A monitor 884 or other type ofdisplay device is also connected to the bus 848 via an interface, suchas a video adapter 886. In addition to the monitor, personal computerstypically include other peripheral output devices (not shown) such asspeakers and printers.

Related computing device 842 commonly operates in a networkedenvironment using logical connections to one or more remote computers,such as a remote computer 888. The remote computer 888 may be anotherpersonal computer, a server, a router, a network PC, a peer device orother common network node, and typically includes many or all of theelements described above relative to related computing device 842. Thelogical connections depicted in FIG. 8 include a local area network(LAN) 890 and a wide area network (WAN) 892. Such networkingenvironments are commonplace in offices, enterprise-wide computernetworks, intranets, and the Internet.

When used in a LAN networking environment, related computing device 842is connected to the local network through a network interface or adapter894. When used in a WAN networking environment, related computing device842 typically includes a modem 896 or other means for establishingcommunications over the wide area network 892, such as the Internet. Themodem 896, which may be internal or external, is connected to the bus848 via a serial port interface 868. In a networked environment, programmodules depicted relative to the personal related computing device 842,or portions thereof, may be stored in the remote memory storage device.It will be appreciated that the network connections shown are exemplaryand other means of establishing a communications link between thecomputers may be used.

Generally, the data processors of related computing device 842 areprogrammed by means of instructions stored at different times in thevarious computer-readable storage media of the computer. Programs andoperating systems are typically distributed, for example, on floppydisks or CD-ROMs. From there, they are installed or loaded into thesecondary memory of a computer. At execution, they are loaded at leastpartially into the computer's primary electronic memory. The inventiondescribed herein includes these and other various types ofcomputer-readable storage media when such media contain instructions orprograms for implementing the blocks described below in conjunction witha microprocessor or other data processor. The invention also includesthe computer itself when programmed according to the methods andtechniques described herein.

For purposes of illustration, programs and other executable programcomponents such as the operating system are illustrated herein asdiscrete blocks, although it is recognized that such programs andcomponents reside at various times in different storage components ofthe computer, and are executed by the data processor(s) of the computer.

General reference is been made herein to one or more related computingdevices, such as related computing device 842. As used herein, “relatedcomputing device” means any electronic device having datacommunications, data storage capabilities, and/or functions to processsignals, such as broadcast signals, received from any of a number ofdifferent sources. For example, a related computing device can be avideo game console, a set top box, an automatic teller machine, a PDA, aPC, a cellular telephone, a peripheral computing device such as aprinter, facsimile machine, copier, or multifunction peripheral device,a server, etc.

Related computing device 842 can include a variety of computer readablemedia identified as communication media. Communication media typicallyembodies computer readable instructions, data structures, programmodules, or other data on an information delivery media.

The term “modulated data signal” means a signal that has one or more ofits characteristics set or changed in such a manner as to encodeinformation in the signal. By way of example, and not limitation,communication media includes wired media such as a wired network ordirect-wired connection, and wireless media such as acoustic, RF,infrared, and other wireless media. Combinations of any of the above arealso included within the scope of computer readable media.

Various modules and techniques may be described herein in the generalcontext of computer-executable instructions, such as program modules,executed by one or more computers or other devices. Generally, programmodules include routines, programs, objects, components, datastructures, etc. that perform particular tasks or implement particularabstract data types. Typically, the functionality of the program modulesmay be combined or distributed as desired in various embodiments.

An implementation of these modules and techniques may be stored on ortransmitted across some form of computer readable media. Computerreadable media can be any available media that can be accessed by acomputer. By way of example, and not limitation, computer readable mediamay comprise “computer storage media” and “communications media.”

“Computer storage media” includes volatile and non-volatile, removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules, or other data. Computer storage mediaincludes, but is not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputer.

“Communication media” typically embodies computer readable instructions,data structures, program modules, or other data defined on anyinformation delivery media.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

1. A method comprising: transmitting a query by a computing device in adomain; receiving, by the computing device, a response to the query fromone or more neighbor-casting (NC) groups in the domain each includingone or more said computing devices; applying, by the computing device, apredetermined criteria to select one NC group, wherein the predeterminedcriteria is selected from the group comprising: the number of saidcomputing devices in the selected NC group; a length of time between thequery and the response from the selected NC group; and a combination ofthe foregoing; joining the computing device to the selected NC group;and when a length of time between a subsequent query from the computingdevice and other computing devices in the selected NC group exceeds apredetermined threshold: removing the computing device from the initialNC group; reapplying the predetermined criteria to select a different NCgroup; and joining the computing device to the different NC group. 2.The method as defined in claim 1, wherein each said NC group has anidentifier that is unique to other said NC groups in the domain.
 3. Themethod as defined in claim 1, wherein each said computing device isselected from among a video game console, a set top box, an automaticteller machine, a Personal Digital Assistance (PDA), a Personal Computer(PC), a cellular telephone, a printer, a facsimile machine, a copier, amultifunction peripheral device, and a server.
 4. The method as definedin claim 1, wherein each said response to the query is transmitted byone said computing device in a respective said NC group.
 5. The methodas defined in claim 1, wherein the query is transmitted over a TCPnetwork with a broadcast or multicast.
 6. The method as defined in claim1, wherein the predetermined criteria to select one said NC groupignores each said response from any said NC group for which the lengthof time between the query and the response exceeds a predeterminedmaximum.
 7. The method as defined in claim 1, wherein: each saidresponse includes the number of computing devices in the responding saidNC group; and the predetermined criteria to select one said NC groupignores any said NC group for which the response includes the number ofcomputing devices in the responding said NC group that exceeds apredetermined maximum.
 8. The method as defined in claim 7, wherein eachsaid response includes an identifier that is unique to the respondingsaid NC group in the domain.
 9. The method as defined in claim 1,wherein one or more of the transmitting, the receiving, the applying,and the joining are executed by a component of an operating system ofthe computing device that is joined to the selected NC group.
 10. Themethod as defined in claim 9, wherein each of the transmitting, thereceiving, the applying, and the joining are executed by the operatingsystem of the computing device joined to the selected NC group.
 11. Themethod as defined in claim 1, wherein one or more of the transmitting,the receiving, the applying, and the joining are executed by anapplication that is running on the computing device joined to theselected NC group.
 12. The method as defined in claim 1, wherein theapplying further comprises determining at least one of: a closest saidNC group for which the corresponding response was first to be received;and a smallest said NC group that has the least number of the computingdevices from among those said NC groups for which the response wasreceived.
 13. The method as defined in claim 12, wherein the applyingfurther comprises selecting the one said NC group to be the smallestsaid NC group when the closest said NC group is more than one said NCgroup.
 14. The method as defined in claim 1, wherein the applyingfurther comprises ordering said NC groups for which a corresponding saidresponse was received according to: the length of time between the queryand the corresponding response; and a number that quantifies thecomputing devices in the corresponding NC group as is contained in thecorresponding response.
 15. The method as defined in claim 14, wherein:the predetermined criteria to select one said NC group ignores each saidresponse from any said NC group for which the length of time between thequery and the response exceeds a predetermined maximum; and the selectedNC group is selected by a condition that is selected from the groupconsisting of: the length of time between the query and thecorresponding response is least; the number of said computing devicescontained in the corresponding response is least; and the number ofmembers contained in the corresponding response is least when more thanone said NC group had the least length of time between the query and thecorresponding response.
 16. A computer storage media comprisinginstructions that, when executed by a computer, performs the method ofclaim
 1. 17. A method comprising: transmitting a query by an initialcomputing device in a domain, wherein the initial computing device is inan initial NC group that contains a number of computing devices that arealso in the domain; receiving, by the initial computing device, aresponse to the query from one or more NC groups in the domain eachincluding one or more computing devices; if a latency in response timesbetween the initial computing device and other computing devices withinthe initial NC group is unacceptable, then: applying, by the computingdevice, predetermined criteria to select one of the one or more NCgroups, wherein the predetermined criteria is selected from the groupcomprising: the number of said computing devices in the selected NCgroup; a length of time between the query and the response from theselected NC group; and a combination of the foregoing; removing theinitial computing device from the initial NC group; and joining theinitial computing device to the selected NC group, wherein computingdevices within the selected NC group have a latency in response timewith the initial computing device that is acceptable.
 18. The method asdefined in claim 17, wherein each said NC group has an identifier thatis unique to other said NC groups in the domain.
 19. The method asdefined in claim 17, wherein each said computing device is selected fromamong a video game console, a set top box, an automatic teller machine,a PDA, a PC, a cellular telephone, a printer, a facsimile machine, acopier, a multifunction peripheral device, and a server.
 20. The methodas defined in claim 17, wherein each said response to the query istransmitted by one said computing device in a respective said NC group.21. The method as defined in claim 17, wherein the query is transmittedover a TCP network with a broadcast or multicast.
 22. The method asdefined in claim 17, wherein the predetermined criteria to select onesaid NC group ignores each said response from any said NC group forwhich the length of time between the query and the response exceeds apredetermined maximum.
 23. The method as defined in claim 17, wherein:each said response includes the number of computing devices in theresponding said NC group; and the predetermined criteria to select onesaid NC group ignores any said NC group for which the response includesthe number of computing devices in the responding said NC group thatexceeds a predetermined maximum.
 24. The method as defined in claim 23,wherein each said response includes an identifier that is unique to theresponding said NC group in the domain.
 25. The method as defined inclaim 17, wherein one or more of the transmitting, the receiving, theapplying, and the joining are executed by a component of an operatingsystem of the initial computing device.
 26. The method as defined inclaim 25, wherein each of the transmitting, the receiving, the applying,and the joining are executed by the operating system of the initialcomputing device.
 27. The method as defined in claim 17, wherein one ormore of the transmitting, the receiving, the applying, and the joiningare executed by an application that is running on the initial computingdevice.
 28. The method as defined in claim 17, wherein the applyingfurther comprises determining at least one of: a closest said NC groupfor which the corresponding response was first to be received; and asmallest said NC group that has the least number of the computingdevices from among those said NC groups for which the response wasreceived.
 29. The method as defined in claim 28, wherein the applyingfurther comprises selecting the one said NC group to be the smallestsaid NC group when the closest said NC group is more than one said NCgroup.
 30. The method as defined in claim 17, wherein the applyingfurther comprises ordering said NC groups for which a corresponding saidresponse was received according to: the length of time between the queryand the corresponding response; and a number quantifying the computingdevices in the corresponding NC group as is contained in thecorresponding response.
 31. The method as defined in claim 30, wherein:the predetermined criteria to select one said NC group ignores each saidresponse from any said NC group for which the length of time between thequery and the response exceeds a predetermined maximum; and the selectedNC group is selected by a condition that is selected from the groupconsisting of: the length of time between the query and thecorresponding response is least; a number of said computing devices inthe corresponding NC group as contained in the corresponding response isleast; and the number of members contained in the corresponding responseis least when more than one said NC group had the least length of timebetween the query and the corresponding response.
 32. A computer storagemedia comprising instructions that, when executed by a computer,performs the method of claim
 17. 33. A method comprising: transmitting aquery by an initial computing device in a domain, wherein the computingdevice is in an initial NC group that contains a number of saidcomputing devices in the domain; receiving by the initial computingdevice a group response to the query from one or more related saidcomputing devices that are in the initial NC group; when a length oftime between the query and each group response exceeds a predeterminedthreshold: applying, by the initial computing device, a predeterminedcriteria to select one said NC group other than the initial NC group,wherein the predetermined criteria is selected from the groupcomprising: the number of said computing devices in the selected NCgroup; a length of time between the query and the group response fromthe selected NC group; and a combination of the foregoing; removing theinitial computing device from the initial NC group; and joining theinitial computing device to the selected NC group.
 34. The method asdefined in claim 33, wherein removing the initial computing device fromthe initial NC group is done according to a predetermined criteria whichincludes a length of time between the query and the group response. 35.A computer storage media comprising instructions that, when executed bya computer, performs the method of claim
 33. 36. A method comprising:transmitting a query by an initial computing device in a domain, whereinthe initial computing device is in an initial NC group that contains anumber of computing devices in the domain; receiving by the initialcomputing device: a group response to the query from one or more relatedcomputing devices that are in the initial NC group; and an other groupresponse to the query from one or more NC groups in the domain eachincluding one or more computing devices; when a length of time betweenthe query and each said group response exceeds a predeterminedthreshold: applying, by the initial computing device, a predeterminedcriteria to select one said NC group other than the initial NC group,wherein the predetermined criteria is selected from the group consistingof: the number of said computing devices in the selected NC group; alength of time between the query and the other group response from theselected NC group; and a combination of the foregoing; removing theinitial computing device from the initial NC group; and joining theinitial computing device to the selected NC group; and updating softwareon computing devices in the selected NC group, wherein the updatingcomprises deploying software, uninstalling software, and providingsecurity patches to installed software, and wherein the softwareupdating includes setting the predetermined criteria to locate computingdevices within the selected NC group according to backup needs ofcomputing devices within the NC group.
 37. The method as defined inclaim 36, wherein: the predetermined criteria to select one said NCgroup ignores each said other group response from any said NC group forwhich the length of time between the query and the other group responseexceeds a predetermined maximum; and the selected NC group is selectedby a condition that is selected from the group consisting of: the lengthof time between the query and the corresponding other group response isleast; or a number of said computing devices in the corresponding NCgroup as in contained in the corresponding other group response isleast; and the number of members as contained in the corresponding othergroup response is least when more than one said NC group had the leastlength of time between the query and the corresponding other groupresponse.
 38. A computer storage media comprising instructions that,when executed by a computer, performs the method of claim 36.